The increasing use of cloud computing and remote execution have made programsecurity especially important. Code obfuscation has been proposed to make theunderstanding of programs more complicated to attackers. In this paper, weexploit multi-core processing to substantially increase the complexity ofprograms, making reverse engineering more complicated. We propose a novelmethod that automatically partitions any serial thread into an arbitrary numberof parallel threads, at the basic-block level. The method generates newcontrol-flow graphs, preserving the blocks' serial successor relations andguaranteeing that one basic-block is active at a time using guards. The methodgenerates m^n different combinations for m threads and n basic-blocks,significantly complicating the execution state. We provide a correctness prooffor the algorithm and implement the algorithm in the LLVM compilationframework.
展开▼